home *** CD-ROM | disk | FTP | other *** search
/ DOpus Plus / DOpus Plus.iso / Tutorial / C Guide / RndPic_module / includes / Window.h < prev   
Encoding:
C/C++ Source or Header  |  1998-09-20  |  8.4 KB  |  376 lines

  1. /*
  2.  
  3.    Window definition
  4.         
  5. */
  6.  
  7. #include <libraries/gadtools.h>
  8. #include <intuition/gadgetclass.h>
  9.  
  10. // a lazyness define (and more readable...)
  11. #define GET_ID(a)   (((struct Gadget *)(a->IAddress))->GadgetID)
  12.  
  13. // prototype of a function to set changes of the sliders to step 10
  14. LONG ChangeValue( struct Gadget *gad, LONG value );
  15.  
  16. enum
  17. {         
  18.           GADGET_ID_TITLE,
  19.           
  20.           GADGET_ID_BEVEL_MAIN,
  21.           
  22.           GADGET_ID_TXT_DESKTOP,
  23.           GADGET_ID_FILE_DESKTOP,
  24.           GADGET_ID_STRING_DESKTOP,
  25.           GADGET_ID_POP_DESKTOP,
  26.           
  27.           GADGET_ID_TXT_LISTER,
  28.           GADGET_ID_FILE_LISTER,
  29.           GADGET_ID_STRING_LISTER,
  30.           GADGET_ID_POP_LISTER,
  31.           
  32.           GADGET_ID_TXT_REQUESTER,
  33.           GADGET_ID_FILE_REQUESTER,
  34.           GADGET_ID_STRING_REQUESTER,
  35.           GADGET_ID_POP_REQUESTER,
  36.           
  37.           GADGET_ID_BUTTON_COPIED,
  38.           GADGET_ID_BUTTON_DELAY,
  39.           
  40.           GADGET_ID_BEVEL_MODESETTINGS,
  41.           
  42.           GADGET_ID_TXT_COPIED,
  43.           GADGET_ID_FILE_COPIED,
  44.           GADGET_ID_STRING_COPIED,
  45.                             
  46.           GADGET_ID_TXT_DELAY,
  47.           GADGET_ID_CYCLE_DELAY,
  48.           GADGET_ID_SLIDER_DELAY,
  49.           
  50.           GADGET_ID_BUTTON_SAVE,
  51.           GADGET_ID_BUTTON_TEST,
  52.           GADGET_ID_BUTTON_CANCEL
  53.           
  54. };
  55.  
  56. USHORT labels[] = { {MSG_UNTIL}, {MSG_MIDDLE}, NULL };
  57.  
  58. struct TagItem cycle[] =
  59. {
  60.        GTST_MaxChars, 128,
  61.        GTCustom_LocaleLabels, (ULONG) &labels,
  62.        TAG_DONE
  63. };
  64.  
  65. struct TagItem rel_desk[] =
  66. {
  67.        GTCustom_LayoutRel, GADGET_ID_BEVEL_MAIN,
  68.        DFB_DefPath, (ULONG) "SYS:#?",
  69.        GTST_MaxChars, 128,
  70.        TAG_DONE
  71. };
  72.  
  73. struct TagItem button[] =
  74. {
  75.        GA_Immediate, TRUE, // not really needed
  76.        TAG_MORE, (ULONG) &rel_desk[0]
  77. };
  78.  
  79. struct TagItem rel_desk_deskfile[] =
  80. {
  81.        GTCustom_Control, GADGET_ID_STRING_DESKTOP,
  82.        TAG_MORE, (ULONG) &rel_desk[0]
  83. };
  84.  
  85. struct TagItem rel_desk_listerfile[] =
  86. {
  87.        GTCustom_Control, GADGET_ID_STRING_LISTER,
  88.        TAG_MORE, (ULONG) &rel_desk[0]
  89. };
  90.  
  91. struct TagItem rel_desk_reqfile[] =
  92. {
  93.        GTCustom_Control, GADGET_ID_STRING_REQUESTER,
  94.        TAG_MORE, (ULONG) &rel_desk[0]
  95. };
  96.  
  97. struct TagItem rel_copy[] =
  98. {
  99.        GTCustom_Control, GADGET_ID_STRING_COPIED,
  100.        DFB_DefPath, (ULONG) "SYS:",
  101.        GTCustom_LayoutRel, GADGET_ID_BEVEL_MODESETTINGS,
  102.        GTST_MaxChars, 128,
  103.        GTCustom_LocaleLabels, (ULONG) &labels,
  104.        TAG_DONE
  105. };
  106.  
  107. struct TagItem slider[] =
  108. {
  109.        GTSL_Min, 100,
  110.        GTSL_Max, 600,
  111.        GA_RelVerify, TRUE,
  112.        GTSL_LevelFormat, (ULONG) "%ld ticks",
  113.        GTSL_MaxLevelLen, 13,
  114.        GTSL_LevelPlace, PLACETEXT_ABOVE,
  115.        GTSL_DispFunc, (ULONG) &ChangeValue,
  116.        TAG_MORE, (ULONG) &rel_copy[0]
  117. };
  118.  
  119. ObjectDef winobjects[] =
  120. {       
  121.         {
  122.            OD_TEXT, TEXTPEN,
  123.  
  124.            { 0, 1, SIZE_MAXIMUM, 1 }, { 0, 0, 0, 0 },
  125.            
  126.            MSG_RNDPIC_DESC, TEXTFLAG_CENTER, 
  127.  
  128.            GADGET_ID_TITLE, NULL
  129.         },
  130.         
  131.         {
  132.            OD_AREA, NULL,
  133.  
  134.            { 1, 2, SIZE_MAX_LESS-1, 3 }, { 0, 4, 0, 26 },
  135.            
  136.            NULL, AREAFLAG_ERASE|AREAFLAG_RECESSED, 
  137.  
  138.            GADGET_ID_BEVEL_MAIN, NULL
  139.         },
  140.         
  141.         {
  142.            OD_GADGET, BUTTON_KIND,
  143.  
  144.            { 0, 0, 10, 1 }, { 4, 3, 0, 6 },
  145.            
  146.            MSG_DESKTOP, BUTTONFLAG_TOGGLE_SELECT,//PLACETEXT_IN, 
  147.  
  148.            GADGET_ID_TXT_DESKTOP, &rel_desk[0]
  149.         },
  150.         {
  151.            OD_GADGET, FILE_BUTTON_KIND,
  152.  
  153.            { 10, 0, 3, 1 }, { 4, 3, 6, 6 },
  154.  
  155.            NULL, NULL, 
  156.  
  157.            GADGET_ID_FILE_DESKTOP, &rel_desk_deskfile[0]
  158.         },
  159.         {
  160.            OD_GADGET, STRING_KIND,
  161.  
  162.            { 13, 0, SIZE_MAX_LESS-3, 1 }, { 10, 3, -4, 6 },
  163.  
  164.            NULL, NULL, 
  165.  
  166.            GADGET_ID_STRING_DESKTOP, &rel_desk[0]
  167.         },
  168.         { 
  169.            OD_GADGET, BUTTON_KIND,
  170.          
  171.            { POS_RIGHT_JUSTIFY, 0, 3, 1 }, { -4, 3, 0, 6 },
  172.  
  173.            (ULONG) "?", TEXTFLAG_TEXT_STRING|BUTTONFLAG_IMMEDIATE, 
  174.  
  175.            GADGET_ID_POP_DESKTOP, &button[0]//rel_desk[0]
  176.         },
  177.         
  178.         {
  179.            OD_GADGET, BUTTON_KIND,
  180.  
  181.            { 0, 1, 10, 1 }, { 4, 9, 0, 6 },
  182.            
  183.            MSG_LISTER, BUTTONFLAG_TOGGLE_SELECT,//PLACETEXT_IN, 
  184.  
  185.            GADGET_ID_TXT_LISTER, &rel_desk[0]
  186.         },
  187.         {
  188.            OD_GADGET, FILE_BUTTON_KIND,
  189.  
  190.            { 10, 1, 3, 1 }, { 4, 9, 6, 6 },
  191.  
  192.            NULL, NULL, 
  193.  
  194.            GADGET_ID_FILE_LISTER, &rel_desk_listerfile[0]
  195.         },
  196.         {
  197.            OD_GADGET, STRING_KIND,
  198.  
  199.            { 13, 1, SIZE_MAX_LESS-3, 1 }, { 10, 9, -4, 6 },
  200.  
  201.            NULL, NULL, 
  202.  
  203.            GADGET_ID_STRING_LISTER, &rel_desk[0]
  204.         },
  205.         { 
  206.            OD_GADGET, BUTTON_KIND,
  207.          
  208.            { POS_RIGHT_JUSTIFY, 1, 3, 1 }, { -4, 9, 0, 6 },
  209.  
  210.            (ULONG) "?", TEXTFLAG_TEXT_STRING|BUTTONFLAG_IMMEDIATE, 
  211.  
  212.            GADGET_ID_POP_LISTER, &rel_desk[0]
  213.         },
  214.         
  215.         {
  216.            OD_GADGET, BUTTON_KIND,
  217.  
  218.            { 0, 2, 10, 1 }, { 4, 15, 0, 6 },
  219.            
  220.            MSG_REQUESTER, BUTTONFLAG_TOGGLE_SELECT, 
  221.  
  222.            GADGET_ID_TXT_REQUESTER, &rel_desk[0]
  223.         },
  224.         {
  225.            OD_GADGET, FILE_BUTTON_KIND,
  226.  
  227.            { 10, 2, 3, 1 }, { 4, 15, 6, 6 },
  228.  
  229.            NULL, NULL, 
  230.  
  231.            GADGET_ID_FILE_REQUESTER, &rel_desk_reqfile[0]
  232.         },
  233.         {
  234.            OD_GADGET, STRING_KIND,
  235.  
  236.            { 13, 2, SIZE_MAX_LESS-3, 1 }, { 10, 15, -4, 6 },
  237.  
  238.            NULL, NULL, 
  239.  
  240.            GADGET_ID_STRING_REQUESTER, &rel_desk[0]
  241.         },
  242.         { 
  243.            OD_GADGET, BUTTON_KIND,
  244.          
  245.            { POS_RIGHT_JUSTIFY, 2, 3, 1 }, { -4, 15, 0, 6 },
  246.  
  247.            (ULONG) "?", TEXTFLAG_TEXT_STRING|BUTTONFLAG_IMMEDIATE, 
  248.  
  249.            GADGET_ID_POP_REQUESTER, &rel_desk[0]
  250.         },
  251.         
  252.         {
  253.            OD_GADGET, BUTTON_KIND,
  254.  
  255.            { 1, 5, 31, 1 }, { 0, 33, 0, 6 },
  256.            
  257.            MSG_COPIED, BUTTONFLAG_TOGGLE_SELECT, 
  258.  
  259.            GADGET_ID_BUTTON_COPIED, NULL
  260.         },
  261.         {
  262.            OD_GADGET, BUTTON_KIND,
  263.  
  264.            { 32, 5, 31, 1 }, { 0, 33, 0, 6 },
  265.            
  266.            MSG_DELAY, BUTTONFLAG_TOGGLE_SELECT, 
  267.  
  268.            GADGET_ID_BUTTON_DELAY, NULL
  269.         },
  270.         
  271.         {
  272.            OD_AREA, NULL,
  273.  
  274.            { 1, 6, SIZE_MAX_LESS-1, 4 }, { 0, 39, 0, 2 },
  275.            
  276.            NULL, AREAFLAG_ERASE|AREAFLAG_RECESSED, 
  277.  
  278.            GADGET_ID_BEVEL_MODESETTINGS, NULL
  279.         },
  280.         
  281.          
  282.         {
  283.            OD_GADGET, BUTTON_KIND,            
  284.  
  285.            { 1, POS_RIGHT_JUSTIFY, 10, 1 }, {  0, -2, 0, 4 },    
  286.  
  287.            MSG_SAVE, PLACETEXT_IN|BUTTONFLAG_OKAY_BUTTON, 
  288.  
  289.            GADGET_ID_BUTTON_SAVE, NULL
  290.         },
  291.         {
  292.            OD_GADGET, BUTTON_KIND,            
  293.  
  294.            { POS_CENTER, POS_RIGHT_JUSTIFY, 10, 1 }, {  0, -2, 0, 4 },    
  295.  
  296.            MSG_TEST, PLACETEXT_IN, 
  297.  
  298.            GADGET_ID_BUTTON_TEST, NULL
  299.         },
  300.         {
  301.            OD_GADGET, BUTTON_KIND,            
  302.  
  303.            { POS_RIGHT_JUSTIFY-1, POS_RIGHT_JUSTIFY, 10, 1 }, {  0, -2, 0, 4 },    
  304.  
  305.            MSG_CANCEL, PLACETEXT_IN|BUTTONFLAG_CANCEL_BUTTON, 
  306.  
  307.            GADGET_ID_BUTTON_CANCEL, NULL
  308.         },
  309.         {  OD_END }
  310. };
  311.  
  312. /* objects for command mode */
  313. ObjectDef delay_objects[] =
  314. {
  315.         {
  316.            OD_GADGET, CYCLE_KIND,
  317.  
  318.            { 0, POS_RIGHT_JUSTIFY, 16, 1 }, { 4, -3, 0, 6 },
  319.  
  320.            MSG_DELAY_C, PLACETEXT_ABOVE, 
  321.  
  322.            GADGET_ID_CYCLE_DELAY, &rel_copy[0]
  323.         }, 
  324.         {
  325.            OD_GADGET, SLIDER_KIND,
  326.  
  327.            { 16, POS_RIGHT_JUSTIFY, SIZE_MAX_LESS-1, 1 }, { 4, -3, 0, 6 },
  328.               
  329.            NULL, NULL, 
  330.  
  331.            GADGET_ID_SLIDER_DELAY, &slider[0]
  332.         },
  333.         {  OD_END }
  334. };
  335.  
  336. /* objects for makelink mode */
  337. ObjectDef copy_objects[] =
  338. {
  339.         {
  340.            OD_TEXT, TEXTPEN,
  341.  
  342.            { 0, 0, SIZE_MAXIMUM, 1 }, { 0, 3, 0, 0 },
  343.            
  344.            MSG_COPYPATH, TEXTFLAG_CENTER, 
  345.  
  346.            GADGET_ID_TXT_COPIED, &rel_copy[0]
  347.         },
  348.         {
  349.            OD_GADGET, DIR_BUTTON_KIND,
  350.  
  351.            { 0, POS_RIGHT_JUSTIFY, 3, 1 }, { 4, -3, 6, 6 },
  352.            
  353.            NULL, NULL, 
  354.  
  355.            GADGET_ID_FILE_COPIED, &rel_copy[0]
  356.         },
  357.         {
  358.            OD_GADGET, STRING_KIND,
  359.  
  360.            { 3, POS_RIGHT_JUSTIFY, SIZE_MAX_LESS-1, 1 }, { 10, -3, 0, 6 },
  361.  
  362.            NULL, NULL, 
  363.  
  364.            GADGET_ID_STRING_COPIED, &rel_copy[0]
  365.         },
  366.         {  OD_END }
  367. };
  368.  
  369. ConfigWindow cfgwin =
  370. {
  371.         { POS_CENTER, POS_CENTER, 64, 17 }, 
  372.         { 0,          0,           0,  3 }
  373. };
  374.  
  375.  
  376.